<?php

namespace app\admin\controller;

use think\Controller;
use think\Request;
use app\admin\model\GoodsModel;
use app\admin\model\CartModel;
use think\DB;

class GoodsController extends Controller
{
    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index()
    {
        //商品列表
        //搜索条件商品名称
        $where = [];
        if (isset($_GET['name']) && !empty($_GET['name'])) {
            $where[] = ['name', 'like', '%'.$_GET['name'].'%'];
        }
        //商品在售或下架 0在售 1下架
        if (isset($_GET['status']) && !empty($_GET['status'])) {
            $where[] = ['status', '=', $_GET['status']];
        }
        //获取数据
        $data = GoodsModel::with('cate')->where($where)->all();
        $data->visible(['cate'=>['name']])->toArray();
        if ($data) {
            return \sendResponse($data);
        }
        return \sendResponse([]);
    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {
        //
    }

    /**
     * 保存新建的资源
     *
     * @param  \think\Request  $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
        //接收参数
        $params = $request->post();
        //判断商品名称是否为空
        if (empty($params['name'])) {
            return \sendResponse('', 3001);
        }

        //判断是否选择分类
        if (empty($params['cate_id'])) {
            return \sendResponse('', 1101);
        }
        //判断轮播图
        if (empty($params['goods_carousel'])) {
            return \sendResponse('', 3002);
        }
        //追加主图
        $c = json_decode($params['goods_carousel']);
        $params['goods_main'] = $c[0];
        //添加
        $res = GoodsModel::create($params);
        if ($res) {
            return \sendResponse();
        }
        return \sendResponse('', -1);
    }

    /**
     * 显示指定的资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function read($id)
    {
        //
    }

    /**
     * 显示编辑资源表单页.
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function edit($id)
    {
        //查询单条商品信息
        $data = GoodsModel::where('id', $id)->find();
        //判断
        if ($data) {
            return \sendResponse($data);
        }

        return \sendResponse([]);
    }

    /**
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request)
    {
        //接收参数
        $params = $request->post();
        $id = $params['id'];
        //判断商品名称是否为空
        if (empty($params['name'])) {
            return \sendResponse('', 3001);
        }

        //判断是否选择分类
        if (empty($params['cate_id'])) {
            return \sendResponse('', 1101);
        }
        //判断轮播图
        if (empty($params['goods_carousel'])) {
            return \sendResponse('', 3002);
        }
        //追加主图
        $c = json_decode($params['goods_carousel']);
        $params['goods_main'] = $c[0];
        //修改
        $res = GoodsModel::update($params, ['id'=>$id]);
        //判断
        if ($res) {
            return \sendResponse();
        }

        return \sendResponse('', -1);
    }

    /**
     * 删除指定资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function delete($id)
    {
        //接收id
        $ids = $_GET['id'];
        //分割成数组
        $ids = explode(',', $ids);
        //开启事务
        DB::startTrans();
        try {
            //循环添加班级
            foreach ($ids as $id) {
                //判断商品是否存在购物车当中，如果存在则连同一起删除
                if (CartModel::where('goods_id', $id)->find()) {
                    CartModel::destroy(['goods_id'=> $id]);
                }
            }
            //删除商品
            GoodsModel::destroy($ids);
            //提交事务
            DB::commit();
            return \sendResponse();
        } catch (\Exception $e) {
            //回滚事务
            DB::rollback();
            return \sendResponse('', -1);
        }
    }

}
